package com.xbongbong.pro.statistic.pojo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.domain.entity.ext.OptionalRangeEntity;
import com.xbongbong.paas.enums.clazz.ConditionClass;
import com.xbongbong.paas.pojo.ItemDataPoJo;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.pro.formexplain.pojo.ReturnExplainPojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * @ClassName DataWarningSavePojo
 * @Description 保存数据预警
 * @Author mengna.Deng
 * @Date 2021/4/16 20:13
 * @Version 1.0
 */
@Getter
@Setter
@ToString
public class DataWarningSavePojo extends BaseDTO {
    /**
     * 数据预警设置id
     */
    private Long id;
    /**
     * 数据预警名称
     */
    private String name;
    /**
     * 图表id
     */
    private Long chartId;
    /**
     * 触发器
     */
    private List<DwTriggerConditionPojo> triggerCondition;
    /**
     * 触发器可选字段列表
     */
    private List<DataWarningFieldAttrPojo> fieldAttrArray;
    /**
     * 触发条件可选字段条件列表
     */
    private List<ConditionClass> fieldConditionArray;
    /**
     * 执行动作
     */
    private JSONArray action;
    /**
     * 执行动作可选值列表
     */
    private List<ItemDataPoJo> actionArray;
    /**
     * 执行策略
     */
    private DataWarningStrategyPojo strategy;
    /**
     * 执行策略类型列表
     */
    private List<ItemDataPoJo> strategyTypeArray;
    /**
     * 周类型--策略可选值列表
     */
    private List<ItemDataPoJo> strategyWeekArray;
    /**
     * 执行人列表
     */
    private List<OptionalRangeEntity> executor;
    /**
     * 可选动态负责人列表attr列表
     */
    private List<ReturnExplainPojo> dynamicManagerArray;
    /**
     * paas短信执行人
     */
    private List<DataWarningFieldAttrPojo> smsExecutor;
    /**
     * paas可作为执行人的字段列表（单行文本&&手机号）
     */
    private List<DataWarningFieldAttrPojo> smsExecutorArray;
    /**
     * 占位符
     */
    private String placeholder;
    /**
     *  采集时间范围
     */
    private JSONObject samplingRange;
    /**
     *  历史预警展示最大数目
     */
    private Integer historyMaxNum;
    /**
     * 执行详情
     */
    @NotBlank(message = "{dto.msg.dataWarningSaveDTO.memo.NotBlank}")
    @Length(max = 20, message = "{dto.msg.dataWarningSaveDTO.memo.Length}")
    private String memo;

    /**
     * 旧触发条件
     */
    private List<DwTriggerConditionPojo> oldTriggerCondition;
    /**
     * 新触发条件
     */
    private List<DwTriggerConditionPojo> newTriggerCondition;
    /**
     * 启用标识，默认0未启用，1启用
     */
    private Integer enable;
    /**
     * 预警颜色
     */
    private String color;
    /**
     * 自定义颜色
     */
    private List<String> customColors;

    /**
     * 编辑标志，0代表新增,1代表修改，2代表删除，不传代表没有任何修改
     */
    private Integer operationFlag;

    private Integer triggerNum;

    public DataWarningSavePojo() {
        this.enable = 0;
        if (null == this.triggerNum){
            this.triggerNum = 0;
        }
    }
}
